home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side B).do / Q & D RAT.bas < prev    next >
BASIC Source File  |  1996-12-24  |  8KB  |  143 lines

  1. 20 IN$ = "                                                                                                                                                                                                                                       "
  2. 30  REM *************************  <CTRL-J><CTRL-G><CTRL-J><CTRL-G>THIS PROGRAM WON'T WORK IF  YOU CHANGE LINE 20 OR IN-   SERT LINES BEFORE IT.<CTRL-G><CTRL-J><CTRL-G>        ************************* <CTRL-J><CTRL-J>
  3. 100  GOTO 1000
  4. 300 A$ = "": CALL 768: IF  PEEK(812)  THEN A$ =  LEFT$(IN$, PEEK(812))
  5. 310  RETURN 
  6. 1000  SPEED= 255: CALL  -1233: REM  INIT TEXT MODE
  7. 1010  GOSUB 63100
  8. 1020  HIMEM: 32768: REM  PROTECT RWTS BUFFER
  9. 1030  REM <CTRL-J>TS%(0,N) = NEXT TSL SEC     TS%(N,0) = FILE TRACKS      TS%(N,1) = FILE SECTORS<CTRL-J>
  10. 1040  DIM TS%(128,1)
  11. 1050  REM  SO BIG TO HANDLE REC  LEN TO 32K
  12. 1060 D$ =  CHR$(4):CR$ = ""
  13. 1070 SP$ = "                              "
  14. 1080  HOME 
  15. 1090 A$ = "READ APPLE TEXT FILES (DOS 3.3)": GOSUB 60000
  16. 1100 A$ = "Q & D PROGRAMMING -- 9/18/82": GOSUB 60000
  17. 1110 V = 3:C$ = "-": GOSUB 61000
  18. 1120  POKE 34,4: POKE 35,22:V = 23:C$ = "-": GOSUB 61000
  19. 1130  VTAB 24: PRINT "ESC TO END READ : RESET WHEN PROMPT IS *": VTAB 23:A$ = " CTRL-S TO STOP LIST ": GOSUB 60000
  20. 1139  REM <CTRL-J><CTRL-J><CTRL-J>SET UP SLOT & DRIVE<CTRL-J><CTRL-J><CTRL-J>
  21. 1140 SL = 6:DR = 1:A$ = "SLOT=" + STR$(SL) +",DRIVE=" + STR$(DR): VTAB 3: GOSUB 60000
  22. 1150  VTAB 5
  23. 1160  PRINT "FILE TO READ ?": INPUT "*";FI$
  24. 1170 ZY = 0:ED = 0:FM = 0
  25. 1180 V = 6:C$ = " ": GOSUB 61000:V = 7: GOSUB 61000
  26. 1190  IF  LEN(FI$) = 0  THEN  HOME : PRINT : PRINT D$"CATALOG": GOTO 1160
  27. 1200  IF  LEN(FI$) >30  THEN  PRINT "NAME TOO LONG": GOTO 1160
  28. 1210  GOSUB 40000
  29. 1220  VTAB 4:A$ = "FILE: " +FI$: GOSUB 60000
  30. 1230 TR = 17:SE = 15
  31. 1240  GOSUB 30000
  32. 1250  HOME 
  33. 1260  IF   NOT (ED  OR FM)  THEN 1240
  34. 1270  IF   NOT FM  THEN  VTAB 6: PRINT "*"FI$" IS NOT": PRINT "A TEXT FILE OR IS NOT ON THE DISK.":V = 4:C$ = " ": GOSUB 61000: VTAB 5: GOTO 1160
  35. 1280  PRINT : PRINT " RANDOM OR SEQUENTIAL? ";: GET T$: IF T$ < >"R"  AND T$ < >"S"  THEN 1280
  36. 1281  PRINT : INPUT "SCREEN OR PRINTER OUTPUT?";K$: IF K$ < >"P"  THEN 1290
  37. 1282  INPUT "WHICH IS YOUR PRINTER SLOT?";PS: IF PS <1  OR PS >7  THEN 1290
  38. 1283  INPUT "DO YOU NEED LINE FEEDS?";K$: IF K$ = "Y"  THEN CR$ =  CHR$(13) + CHR$(10)
  39. 1284  INPUT "DO YOU NEED A DELAY AFTER C/R?";K$: IF K$ = "Y"  THEN  INPUT "HOW MANY NULLS?";NC: FOR ZZ = 1 TO NC:CR$ = CR$ + CHR$(0): NEXT 
  40. 1290  GOSUB 62000
  41. 1300  IF T$ = "R"  THEN 4000
  42. 1305  IF PS  THEN  PRINT D$"PR#"PS
  43. 1310  HOME : PRINT : PRINT D$"OPEN"FI$
  44. 1320  PRINT D$"READ"FI$
  45. 1330  ONERR  GOTO 3000
  46. 1340  SPEED= 200
  47. 1350  GOSUB 300
  48. 1360  INVERSE : PRINT A$: NORMAL : PRINT CR$;
  49. 1370  IF  PEEK(49152) = 155  THEN  GOSUB 63000: RUN 
  50. 1380  GOTO 1350
  51. 3000  SPEED= 255: PRINT : PRINT D$"CLOSE":C$ = ":":V =  PEEK(37): GOSUB 61000: PRINT "END OF FILE": INPUT "";K$: GOSUB 63000: RUN 
  52. 4000  PRINT : PRINT "DO YOU KNOW THE RECORD LENGTH? ": GET K$: IF K$ < >"N"  THEN 4050
  53. 4010  GOSUB 40000
  54. 4020  GOSUB 29000
  55. 4030  GOSUB 28000
  56. 4040  PRINT "RECORD SIZE="RL: GOTO 4060
  57. 4050  PRINT : INPUT " WHAT IS THE RECORD SIZE? ";RL
  58. 4060  INPUT "START READING AT WHAT RECORD? ";RN
  59. 4070  GOSUB 62000
  60. 4075  IF PS  THEN  PRINT D$"PR#"PS
  61. 4080  PRINT : PRINT D$"OPEN"FI$",L"RL
  62. 4090  PRINT D$"READ"FI$",R"RN
  63. 4100  PRINT CR$"   >>> RECORD "RN" <<<"CR$
  64. 4110  ONERR  GOTO 4150
  65. 4120 A$ = "": CALL 768: IF  PEEK(812)  THEN A$ =  LEFT$(IN$, PEEK(812))
  66. 4130  INVERSE : PRINT A$: NORMAL : PRINT CR$;
  67. 4140  GOTO 4120
  68. 4150  CALL 816:RN = RN +1: POKE 216,0
  69. 4160  PRINT : IF  PEEK(49152) = 155  THEN  GOSUB 63000: RUN 
  70. 4180  GOTO 4080
  71. 9999  END 
  72. 27999  REM <CTRL-J><CTRL-J><CTRL-J>DETERMINE REC LEN<CTRL-J><CTRL-J><CTRL-J>
  73. 28000 ZS = 0: FOR ZZ = 1 TO 128: IF   NOT (TS%(ZZ,0)  OR TS%(ZZ,1))  THEN RL = RL +256: NEXT 
  74. 28010  FOR ZW = ZZ TO 128
  75. 28015  IF   NOT (TS%(ZW,0)  OR TS%(ZW,1))  THEN ZX = 256: GOTO 28070
  76. 28020 TR = TS%(ZW,0):SE = TS%(ZW,1): GOSUB 50000
  77. 28030  FOR ZY = 0 TO 255: IF  PEEK(BS +ZY)  AND   NOT ZS  THEN  NEXT 
  78. 28040  IF ZY <256  THEN ZS = 1
  79. 28050  FOR ZX = ZY TO 255: IF   NOT  PEEK(BS +ZX)  THEN  NEXT 
  80. 28060  IF ZX <256  THEN ZS = 0
  81. 28070 RL = RL +ZX
  82. 28080  IF (ZS  OR ZX = 256)  THEN  NEXT ZW
  83. 28090  RETURN 
  84. 28999  REM <CTRL-J><CTRL-J><CTRL-J>BUILD TRK-SECTOR LIST<CTRL-J><CTRL-J><CTRL-J>
  85. 29000 CMD = 1:BS = 32768: GOSUB 50000
  86. 29010 TS%(0,0) =  PEEK(BS +1):TS%(0,1) =  PEEK(BS +2)
  87. 29020 ZY = 1
  88. 29030  FOR ZZ = 12 TO 254  STEP 2:TS%(ZY,0) =  PEEK(BS +ZZ):TS%(ZY,1) =  PEEK(BS +ZZ +1):ZY = ZY +1: NEXT 
  89. 29040  IF   NOT TS%(0,0)  THEN 29070
  90. 29050 TR = TS%(0,0):SE = TS%(0,1): GOSUB 50000
  91. 29060  FOR ZZ = 12 TO 22  STEP 2:TS%(ZY,0) =  PEEK(BS +ZZ):TS%(ZY,1) =  PEEK(BS +ZZ +1):ZY = ZY +1: NEXT 
  92. 29070  RETURN 
  93. 29999  REM <CTRL-J><CTRL-J><CTRL-J>VERIFY FILE PRESENCE<CTRL-J><CTRL-J><CTRL-J>
  94. 30000 SL = 6:DR = 1:CMD = 1
  95. 30010 BS = 32768
  96. 30020  GOSUB 50000
  97. 30030 TR =  PEEK(BS +1):SE =  PEEK(BS +2): IF   NOT (TR  OR SE)  THEN ED = 1
  98. 30040  FOR ZZ = 11 TO 221  STEP 35: IF  PEEK(BS +ZZ +3) = 0  THEN ED = 1: GOTO 30130
  99. 30059  REM <CTRL-J>EXTANT TEXT FILE ?<CTRL-J>
  100. 30060 FT =  PEEK(BS +ZZ +2): IF FT < >0  AND FT < >128  THEN 30130
  101. 30070  IF  PEEK(BS +ZZ) = 255  THEN 30130
  102. 30089  REM <CTRL-J>TEST FOR TITLE MATCH<CTRL-J>
  103. 30090 FJ$ = "": FOR ZY = 3 TO 32:FJ$ = FJ$ + CHR$( PEEK(BS +ZZ +ZY) -128): NEXT 
  104. 30100  IF  LEN(FI$) <30  THEN  IF  LEFT$(FJ$, LEN(FI$)) = FI$  AND  MID$ (FJ$, LEN(FI$) +1) =  MID$ (SP$, LEN(FI$) +1)  THEN FM = 1
  105. 30110  IF FJ$ = FI$  THEN FM = 1
  106. 30120  IF FM  THEN TR =  PEEK(BS +ZZ):SE =  PEEK(BS +ZZ +1)
  107. 30130  IF ED  OR FM  THEN 30150
  108. 30140  NEXT ZZ
  109. 30150  RETURN 
  110. 39999  REM <CTRL-J><CTRL-J><CTRL-J>POKE RWTS<CTRL-J><CTRL-J><CTRL-J>
  111. 40000  POKE 768,169: POKE 769,3: POKE 770,160: POKE 771,10: POKE 772,32: POKE 773,217: POKE 774,3: POKE 775,76: POKE 776,31:
  112. 40010  POKE 777,3: POKE 778,1: POKE 779,96: POKE 780,1: POKE 781,0: POKE 782,0: POKE 783,0: POKE 784,27: POKE 785,3:
  113. 40020  POKE 786,0: POKE 787,112: POKE 788,0: POKE 789,0: POKE 790,1: POKE 791,0: POKE 792,0: POKE 793,96: POKE 794,1:
  114. 40030  POKE 795,0: POKE 796,1: POKE 797,239: POKE 798,216: POKE 799,41: POKE 800,0: POKE 801,141: POKE 802,20: POKE 803,3:
  115. 40040  POKE 804,144: POKE 805,3: POKE 806,238: POKE 807,20: POKE 808,3: POKE 809,96
  116. 40050  RETURN 
  117. 49999  REM <CTRL-J><CTRL-J><CTRL-J>EXECUTE RWTS<CTRL-J><CTRL-J><CTRL-J>
  118. 50000  POKE 783,SEC
  119. 50010  POKE 782,TRK
  120. 50020  POKE 790,CMD
  121. 50030  POKE 780,DR
  122. 50040  POKE 779,SL *16
  123. 50050  POKE 786,0
  124. 50060  POKE 787,BS/256
  125. 50070  CALL 768
  126. 50080  IF  PEEK(788)  THEN  VTAB 24::A$ = "ERR " + STR$( PEEK(791)) +" @ TRK " + STR$(TR) +", SEC " + STR$(SE) +"--RETRYING.": GOSUB 60000: GOTO 50000
  127. 50090  RETURN 
  128. 59999  REM <CTRL-J><CTRL-J>CENTER A$<CTRL-J>
  129. 60000  POKE 216,0: HTAB (21 - LEN(A$)/2): PRINT A$: RETURN 
  130. 60999  REM <CTRL-J><CTRL-J>LINE OF C$ @ V<CTRL-J>
  131. 61000  VTAB V: FOR A = 0 TO 39: PRINT C$;: NEXT : RETURN 
  132. 61999  REM <CTRL-J><CTRL-J><CTRL-J>POKE INPUT ROUTINE<CTRL-J><CTRL-J><CTRL-J>
  133. 62000  POKE 768,169: POKE 769,128: POKE 770,133: POKE 771,51: POKE 772,32: POKE 773,111: POKE 774,253: POKE 775,162: POKE 776,0:
  134. 62010  POKE 777,189: POKE 778,0: POKE 779,2: POKE 780,41: POKE 781,127: POKE 782,201: POKE 783,0: POKE 784,208: POKE 785,2:
  135. 62020  POKE 786,169: POKE 787,92: POKE 788,201: POKE 789,13: POKE 790,240: POKE 791,16: POKE 792,157: POKE 793,10: POKE 794,8:
  136. 62030  POKE 795,232: POKE 796,138: POKE 797,201: POKE 798,230: POKE 799,208: POKE 800,232: POKE 801,234: POKE 802,234: POKE 803,234:
  137. 62040  POKE 804,234: POKE 805,234: POKE 806,234: POKE 807,234: POKE 808,142: POKE 809,44: POKE 810,3: POKE 811,96: POKE 812,230: RETURN 
  138. 62999  REM <CTRL-J><CTRL-J><CTRL-J>CLEAR OUT IN$ & CLEAN      UP LOOSE ENDS<CTRL-J><CTRL-J><CTRL-J>
  139. 63000  FOR ZZ = 2058 TO 2287: POKE ZZ,32: NEXT : POKE 49168,0: PRINT "<CTRL-D>PR#0": PRINT : PRINT "<CTRL-D>CLOSE": RETURN 
  140. 63099  REM <CTRL-J><CTRL-J><CTRL-J>FIX ?OUT OF MEMORY ERR<CTRL-J><CTRL-J><CTRL-J>
  141. 63100  POKE 816,104: POKE 817,168: POKE 818,104: POKE 819,166: POKE 820,223: POKE 821,154: POKE 822,72: POKE 823,152: POKE 824,72: POKE 825,96: RETURN 
  142. 65535  REM *******************     *                     *     * A PRODUCT OF Q & D  *     * PROGRAMMING.  DUGYM *     * QYCFYL, AUTHOR.     *     *                     *     ***********************
  143. 65535  REM *********               *           *               * SEP. 1982 *               *           *               *************